package com.xssn.fjnd.contend.vodtest;

import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.vod.model.v20170321.*;

/**
 * 说明：
 * 1. 本Demo为创建首帧截图模板后，提交首帧截图任务。
 * 2. 对于新上传的视频，建议该步骤放在【音视频分析完成】事件成功之后，对于存量且状态正常的视频，可自行设计。
 * 3. 截图为异步任务，需要等到【视频截图完成】事件成功之后（推荐），可获取截图地址。
 * 4. 根据回调事件中的SnapshotRegular，可推测出截图输出地址。详情请参见【视频截图完成】文档中的截图地址生成规则说明。
 * 5. 若您暂无回调服务，也可以通过ListSnapshots接口主动查询，该接口默认只返回最新一次的截图结果。详情请参见ListSnapshots接口文档。
 */
public class SubmitSnapshotJob {

    // 阿里云账号AccessKey拥有所有API的访问权限，建议您使用RAM用户进行API访问或日常运维。
    // 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里，否则可能导致AccessKey泄露，威胁您账号下所有资源的安全。
    // 本示例通过从环境变量中读取AccessKey，来实现API访问的身份验证。运行代码示例前，请配置环境变量ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET。
    public static String accessKeyId = "LTAI5t8dyprRRh5rzP6kWuVc";
    public static String accessKeySecret = "8a1sYYmB1ctaLblN0XEIgi4NUS9EVX";

    public static void main(String[] args) {

        try{
            DefaultAcsClient vodClient = initVodClient(accessKeyId, accessKeySecret);
            SubmitSnapshotJobResponse response = submitSnapshotJob(vodClient);
            System.out.println("RequestId is:" + response.getRequestId());
            System.out.println("JobId is:" + response.getSnapshotJob().getJobId());
        }catch (Exception e){

        }
    }

    public static SubmitSnapshotJobResponse submitSnapshotJob(DefaultAcsClient vodClient) throws ClientException {
        SubmitSnapshotJobRequest request = new SubmitSnapshotJobRequest();
        request.setVideoId("1c6ca110457771eebfb50764a3fc0102");
        request.setSnapshotTemplateId("577fcc6d5a884f5994930b3a9c5553f2");
        //自定义透传参数，回调时可用，非必须，用于区分封面首帧截图
        request.setUserData("{\"Extend\":{\"SnapshotType\":\"FirstFrame\",\"VideoId\":\"1c6ca110457771eebfb50764a3fc0102\"}}");
        return vodClient.getAcsResponse(request);
    }

    public static DefaultAcsClient initVodClient(String accessKeyId, String accessKeySecret) throws ClientException {
        // 点播服务接入区域
        String regionId = "cn-shanghai";
        DefaultProfile profile = DefaultProfile.getProfile(regionId, accessKeyId, accessKeySecret);
        DefaultAcsClient client = new DefaultAcsClient(profile);

        return client;
    }

    //ListSnapshots 查询截图
    public static ListSnapshotsResponse listSnapshots(DefaultAcsClient vodClient) throws ClientException {
        ListSnapshotsRequest request = new ListSnapshotsRequest();
        request.setVideoId("1c6ca110457771eebfb50764a3fc0102****");
        request.setSnapshotType("NormalSnapshot");

        ListSnapshotsResponse response = vodClient.getAcsResponse(request);
        System.out.println("RequestId is:" + response.getRequestId());
        System.out.println("SnapshotUrl is:" + response.getMediaSnapshot().getSnapshots().get(0).getUrl());
        return vodClient.getAcsResponse(request);
    }

}